/**
 * Copyright 2010 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * Author: jacoby (Jacoby Thwaites)
 *
 * Behaviours in the composition tab.
 */
(function($) {
  $(document).ready(function() {

    /*
     * The activeViews callback updates the op status indicators
     * and schedules the next poll.
     */
    var callback = function(result) {

      // Reset all view-status divs.
      $(".view-status").removeClass("value-active").removeAttr("title");

      // Iterate over each op in the returned XML and set the corresponding
      // view-status div.
      $("op", result).each(function() {
        var id = $(this).attr("id");
        var opRef = "{op," + id + "}";
        var selector = "div[behaviour='" + opRef + "'] .view-status";

        $(selector).addClass("value-active")
                   .attr("title", $(this).parent().attr("node"));
      });
      window.setTimeout(activeViews, 10000);
    };

    /*
     * Define the interval function.
     */
    var activeViews = function() {
      $.ajax({
        url: "web_srv:active_views",
        dataType: 'xml',
        data: {
          root : $("#source composition").attr("root")
          },
        success: callback,
        error: function(xhr, textStatus, errorThrown) {
          alert("Error: " + errorThrown);
        }
      });
    };

    // Poll for active views.
    window.setTimeout(activeViews, 0);
  });
})(jQuery);
